home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 32 / Amiga Format AFCD32 (Nov 1998, Issue 117).iso / -seriously_amiga- / programming / e / newgui / src / plugins / pl_imagebutton.e < prev    next >
Text File  |  1998-08-10  |  3KB  |  105 lines

  1. OPT     OSVERSION=37
  2. OPT     MODULE
  3.  
  4. MODULE  'newgui/newgui'
  5. MODULE  'graphics/rastport'
  6. MODULE  'intuition/intuition'
  7. MODULE  'intuition/gadgetclass'
  8. MODULE  'gadgets/button'
  9.  
  10. EXPORT  CONST   IMGBUTTON = PLUGIN
  11.  
  12. EXPORT OBJECT imagebutton OF plugin
  13.   selected
  14. PRIVATE
  15.   button:PTR TO gadget
  16.   buttonbase
  17.   image:PTR TO image
  18.   toggle, push, resize
  19.   width, height
  20. ENDOBJECT
  21.  
  22. PROC imagebutton(image:PTR TO image,width=0,height=0,resizex=FALSE,
  23.                  resizey=FALSE,disabled=FALSE) OF imagebutton
  24.   self.buttonbase:=OpenLibrary('gadgets/button.gadget',37)
  25.   IF self.buttonbase=NIL THEN Raise("butt")
  26.   self.image:=image
  27.   self.toggle:=FALSE
  28.   self.push:=FALSE
  29.   self.selected:=FALSE
  30.   self.resize:=(IF resizex THEN RESIZEX ELSE 0) OR
  31.                (IF resizey THEN RESIZEY ELSE 0)
  32.   self.dis:=disabled
  33.   self.width:=Max(width,image.width)
  34.   self.height:=Max(height,image.height)
  35. ENDPROC
  36.  
  37. PROC toggleimagebutton(image,width=0,height=0,selected=FALSE,resizex=FALSE,
  38.                        resizey=FALSE,disabled=FALSE) OF imagebutton
  39.   self.imagebutton(image,width,height,resizex,resizey)
  40.   self.toggle:=TRUE
  41.   self.selected:=selected
  42. ENDPROC
  43.  
  44. PROC pushimagebutton(image,width=0,height=0,selected=FALSE,resizex=FALSE,
  45.                      resizey=FALSE,disabled=FALSE) OF imagebutton
  46.   self.imagebutton(image,width,height,resizex,resizey)
  47.   self.push:=TRUE
  48.   self.selected:=selected
  49. ENDPROC
  50.  
  51. PROC end() OF imagebutton
  52.   IF self.buttonbase THEN CloseLibrary(self.buttonbase)
  53. ENDPROC
  54.  
  55. PROC min_size(ta,fh) OF imagebutton
  56. ENDPROC self.width+4, self.height+2
  57.  
  58. PROC will_resize() OF imagebutton IS self.resize
  59.  
  60. PROC render(ta,x,y,xs,ys,w:PTR TO window) OF imagebutton
  61.   self.button:=NewObjectA(NIL,'button.gadget',
  62.                          [GA_TOP,y, GA_LEFT,x, GA_WIDTH,xs, GA_HEIGHT,ys,
  63.                           GA_IMAGE,self.image, GA_TOGGLESELECT,self.toggle,
  64.                           BUTTON_PUSHBUTTON,self.push,
  65.                           GA_DISABLED,self.dis, GA_SELECTED,self.selected,
  66.                           GA_RELVERIFY,TRUE, BUTTON_FILLPEN,w.rport.bgpen, NIL])
  67.   IF self.button=NIL THEN Raise("butt")
  68.   AddGList(w,self.button,-1,1,NIL)
  69.   RefreshGList(self.button,w,NIL,1)
  70. ENDPROC
  71.  
  72. PROC clear_render(win:PTR TO window) OF imagebutton
  73.   IF self.button
  74.     RemoveGList(win,self.button,1)
  75.     DisposeObject(self.button)
  76.   ENDIF
  77. ENDPROC
  78.  
  79. PROC message_test(imsg:PTR TO intuimessage,win) OF imagebutton
  80.   IF imsg.class=IDCMP_GADGETUP THEN RETURN imsg.iaddress=self.button
  81. ENDPROC FALSE
  82.  
  83. PROC message_action(class,qual,code,win) OF imagebutton
  84.   self.selected:=code
  85. ENDPROC TRUE
  86.  
  87. PROC setselected(selected=TRUE) OF imagebutton
  88.   IF self.toggle OR self.push
  89.     SetGadgetAttrsA(self.button,self.gh.wnd,NIL,[GA_SELECTED,selected,NIL])
  90.     self.selected:=selected
  91.   ENDIF
  92. ENDPROC
  93.  
  94. PROC setimage(image:PTR TO image) OF imagebutton
  95.   IF (image.width<=self.width) AND (image.height<=self.height)
  96.     SetGadgetAttrsA(self.button,self.gh.wnd,NIL,[GA_IMAGE,image,NIL])
  97.     self.image:=image
  98.   ENDIF
  99. ENDPROC
  100.  
  101. PROC disable(disabled=TRUE) OF imagebutton
  102.   SetGadgetAttrsA(self.button,self.gh.wnd,NIL,[GA_DISABLED,disabled,NIL])
  103.   self.dis:=disabled
  104. ENDPROC
  105.